#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
# @Date : 2024/3/25 17:02
# @Author : water
# @Description : 字符串操作

"""
字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 或 " )来创建字符串。
Python 访问字符串中的值
    Python 不支持单字符类型，单字符在 Python 中也是作为一个字符串使用。
    Python 访问子字符串，可以使用方括号 [] 来截取字符串，字符串的截取的语法格式如下：
    变量[头下标:尾下标]
    索引值以 0 为开始值，-1 为从末尾的开始位置。
Python 字符串更新
    你可以截取字符串的一部分并与其他字段拼接，
Python 转义字符
    在需要的字符中使用特殊字符时，python 用反斜杠 "\" 转义字符
Python 字符串运算符  + * [] [:] in not in r/R %

Python 字符串格式化  %c %s %d %f %o %x %e %g %E %G %% m.n %.n
    Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式，但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
    在 Python 中，字符串格式化使用与 C 中 sprintf 函数一样的语法。
    Python2.6 开始，新增了一种格式化字符串的函数 str.format()，它增强了字符串格式化的功能。
Python三引号
    python三引号允许一个字符串跨多行，字符串中可以包含换行符、制表符以及其他特殊字符
f-string :用了这种方式明显更简单了，不用再去判断使用 %s，还是 %d
    f-string 是 python3.6 之后版本添加的，称之为字面量格式化字符串，是新的格式化字符串的语法。
    f-string 格式化字符串以 f 开头，后面跟着字符串，字符串中的表达式用大括号 {} 包起来，它会将变量或表达式计算后的值替换进去之前我们习惯用百分号 (%):
Unicode 字符串
    在Python2中，普通字符串是以8位ASCII码进行存储的，而Unicode字符串则存储为16位unicode字符串，这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。
    在Python3中，所有的字符串都是Unicode字符串。
Python 字符串的内建函数：

注意：
    在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果
"""

# Python 访问字符串中的值

var = 'hello world !'

print(var[8], var[-1], var[0:5])

# Python 字符串更新

str2 = var[3:5] + "sanduo"
print(str2)

# Python 转义字符 \v \t \r \n \b \f \' \"

print("\n Hello \t World!")
print("Hello,\b world!")

# Python 字符串运算符 + * [] [:] in not in r/R %

a = "hello"
b = "python"
print(a + b, a * 3, a[3], a[1:5], 'e' in a, 'y' not in a, r'hello \t python')

import time

for i in range(3):
    print(r"\r{:3}%".format(i), end=' ')
    time.sleep(0.05)

# Python 字符串格式化 %c %s %d %f %o %x %e %g %E %G %% m.n %.n

print("\n")
print("我叫 %s 今年 %d 岁!" % ('小明', 10))

name = '小明'
print('Hello %s' % name)

# f-string 格式化字符串以 f 开头，后面跟着字符串，字符串中的表达式用大括号 {} 包起来，它会将变量或表达式计算后的值替换进去，
print(f'Hello {name}')

# 在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果
x = 1
print(f'{x + 1}')  # Python 3.6
print(f'{x+1=}')  # Python 3.8


# Python 的字符串内建函数 capitalize() lower() upper() title()、
